home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / RLaB 1.18c / testmatrix / gallery.r < prev    next >
Text File  |  1994-12-20  |  3KB  |  96 lines

  1. //-------------------------------------------------------------------//
  2.  
  3. // Synopsis:    Famous, and not so famous, test matrices.
  4.  
  5. // Syntax:      A = gallery ( N )
  6.  
  7. // Description:
  8.  
  9. //      A is an N-by-N matrix with some special property. The
  10. //      following values of N are currently available: 
  11.  
  12. //         N = 3 is badly conditioned.
  13. //         N = 4 is the Wilson matrix.  Symmetric pos def, integer inverse.
  14. //         N = 5 is an interesting eigenvalue problem: defective, nilpotent.
  15. //         N = 8 is the Rosser matrix, a classic symmetric eigenvalue problem.
  16. //               [A, e] = GALLERY(8) returns the exact eigenvalues in e.
  17. //         N = 21 is Wilkinson's tridiagonal W21+, another eigenvalue problem.
  18.  
  19. //       Original version supplied with MATLAB.  Modified by N.J. Higham.
  20. //
  21. //      References:
  22. //      J.R. Westlake, A Handbook of Numerical Matrix Inversion and Solution
  23. //         of Linear Equations, John Wiley, New York, 1968.
  24. //      J.H. Wilkinson, The Algebraic Eigenvalue Problem, Oxford University
  25. //         Press, 1965.
  26.  
  27. //    This file is a translation of gallery.m from version 2.0 of
  28. //    "The Test Matrix Toolbox for Matlab", described in Numerical
  29. //    Analysis Report No. 237, December 1993, by N. J. Higham.
  30. //-------------------------------------------------------------------//
  31.  
  32. gallery = function ( n )
  33. {
  34.   if (n == 3)
  35.   {
  36.  
  37.     A = [ -149,   -50,  -154;
  38.            537,   180,   546;
  39.            -27,    -9,   -25 ];
  40.     return A;
  41.  
  42.   else if (n == 4) {
  43.  
  44.     A = [10,     7,     8,     7;
  45.           7,     5,     6,     5;
  46.           8,     6,    10,     9;
  47.           7,     5,     9,    10];
  48.     return A;
  49.  
  50.   else if (n == 5) {
  51.  
  52.     //   disp('Try to find the EXACT eigenvalues and eigenvectors.')
  53.     //   Matrix devised by Cleve Moler.  Its Jordan form has just one block, with
  54.     //   eigenvalue zero.  Proof: A^k is nonzero for k<5, zero for k=5.
  55.     //   TRACE(A)=0.  No simple form for null vector.
  56.  
  57.     A = [  -9,     11,    -21,     63,    -252;
  58.            70,    -69,    141,   -421,    1684;
  59.          -575,    575,  -1149,   3451,  -13801;
  60.          3891,  -3891,   7782, -23345,   93365;
  61.          1024,  -1024,   2048,  -6144,   24572 ];
  62.     return A;
  63.  
  64.   else if (n == 8) {
  65.  
  66.     A  = [ 611,  196, -192,  407,   -8,  -52,  -49,   29;
  67.            196,  899,  113, -192,  -71,  -43,   -8,  -44;
  68.           -192,  113,  899,  196,   61,   49,    8,   52;
  69.            407, -192,  196,  611,    8,   44,   59,  -23;
  70.             -8,  -71,   61,    8,  411, -599,  208,  208;
  71.            -52,  -43,   49,   44, -599,  411,  208,  208;
  72.            -49,   -8,    8,   59,  208,  208,   99, -911;
  73.             29,  -44,   52,  -23,  208,  208, -911,   99.  ];
  74.  
  75.     //  Exact eigenvalues from Westlake (1968), p.150 (ei'vectors given too):
  76.     a = sqrt(10405); 
  77.     b = sqrt(26);
  78.     e = [-10*a,   0,   510-100*b,  1000,   1000,   510+100*b, ...
  79.           1020,   10*a]';
  80.     return << A = A; e = e >>;
  81.  
  82.   else if (n == 21) {
  83.  
  84.     // W21+, Wilkinson (1965), p.308.
  85.     E = diag(ones(n-1,1),1);
  86.     m = (n-1)/2;
  87.     A = diag(abs(-m:m)) + E + E';
  88.     return A;
  89.  
  90.   else
  91.  
  92.     error("Sorry, that value of N is not available.");
  93.  
  94.   } } } } }
  95. };
  96.